package cn.zhaoyuening.leasecloud.device.container;

import cn.zhaoyuening.leasecloud.common.domain.Device;
import io.netty.channel.Channel;

import java.io.Serializable;

/**
 * Created by Buynow on 2017/7/8.
 * 在线设备容器
 */
public interface DeviceContainer {

    Device findById(String id);

    /**
     * 返回设备状态码
     * @param id 设备的id
     * @return 设备状态 1、离线 2、正忙 3、空闲 4、未定义(需要像设备查询)
     */
    Integer queryDeviceStatus(String id);

    /**
     * 添加设备到上线设备容器
     * @param id 设备id
     * @param status 设备当前状态
     */
    void addDevice(String id,Integer status,Channel channel);

    /**
     * 设置设备的状态信息
     * @param id 设备id
     * @param status 设备状态
     */
    void setDeviceStatus(String id,Integer status);

    /**
     * 通过设备id 获取与netty相连的通道
     * @param id 设备id
     * @return  设备通道，如果未在线返回null
     */
    Channel getDeviceChannel(String id);

    /**
     * 通过通道id 是设备离线
     * @param channelId
     */
    void deviceOfflineByChannelId(String channelId);

    /**
     * 通过设备id 使设备离线
     * @param deviceId
     */
    void deviceOfflineByDeviceId(String deviceId);

}
